package file;

import java.io.*;
import java.util.*;

public class Appello {
	static File leggiFile(Scanner sc, boolean esiste) {// da fare
		File f = null;
		for (;;) {
			String nome = sc.nextLine();
			f = new File(nome);
			if (!f.exists())
				System.out.println(nome + " inesistente. Ridarlo!");
			else
				break;
		}// for
		return f;

	}// leggiFile

	static void scriviFile(File f) throws IOException {
		RandomAccessFile raf = new RandomAccessFile(f, "r");// apperto in sola
															// lettura;
		System.out.println('[');
		for (;;) {
			try {
				int x = raf.readInt();
				System.out.println(x);
				if (raf.getFilePointer() < raf.length()) {
					System.out.print(", ");
				}
			} catch (EOFException e) {
				break;
			}
		}// for
		System.out.println(']');
		raf.close();

	}

	public static void main(String[] args) throws IOException {
		Scanner sc = new Scanner(System.in);
		System.out.print("Fornisci il nome del primo file tipato di interi");
		File f1 = leggiFile(sc, true);
		System.out
				.print("Fornisci il nome del secondo file testuale di interi");
		File f2 = leggiFile(sc, true);
		System.out.print("Fornisci il nome del terzo file tipato di interi");
		File f3 = leggiFile(sc, false);

		DataInputStream dis = new DataInputStream(new FileInputStream(f1));
		BufferedReader br = new BufferedReader(new FileReader(f2));
		RandomAccessFile raf = new RandomAccessFile(f3, "rw");// aperto in
																// lettura/scrittura.
		boolean x1ok = false, x2ok = false;
		int x1 = 0;
		int x2 = 0;
		int x3 = 0;
		for (;;) {
			try {
				x1 = dis.readInt();
				x1ok = true;
			} catch (EOFException e) {
				x1ok = false;
			}
			try {
				x2 = Integer.parseInt(br.readLine());
				x2ok = true;

			} catch (Exception e) {
				x2ok = false;
			}
			if (x1ok && x2ok) {
				x3 = Integer.parseInt(String.valueOf(x1) + String.valueOf(x2));
				raf.writeInt(x3);
			} else if (x1ok)
				raf.writeInt(x1);
			else if (x2ok)
				raf.writeInt(x2);
			else
				break;

		}// for
		dis.close();
		br.close();
		raf.close();
		scriviFile(f3);

	}
}
